/* 
    登录接口
*/

const loginRouter = require('koa-router')();
// 引入jwt 用来生成token
const jwt = require('jsonwebtoken');
// 引入数据库查询方法
const query = require('../utils/mysql');
// 引入 sql语句
const { QUERY_USER_BY_USERNAME } = require('../utils/sql');

loginRouter.post('/', async (ctx) => {
    const request = ctx.request.body;
    const { username, password } = request;
    // 验证账号密码是否正确
    const res = await query(QUERY_USER_BY_USERNAME('userbase', username, password));
    // 如果 账号或密码错误
    if (!res.length) {
        ctx.body = {
            flag: false,
            code: -1,
            msg: '登陆失败，用户名或密码错误！'
        };
        return false;
    }

    // 账号验证通过，将用户信息和token返回给客户端
    // 放在token中的数据
    const payload = {
        uid: res[0].uid,
        username: res[0].username
    }
    // 密钥，可以是自定的字符串，也可以是私钥
    const sign = 'login sign';
    // 其他选项
    let options = {
        //过期时间，表示秒的数字，或者表示时间跨度的字符串，格式见：
        expiresIn: 600 // token过期时间 10min
    };
    // 生成token
    const token = jwt.sign(payload, sign, options);
    ctx.body = {
        flag: true,
        code: 1,
        data: {
            uid: res[0].uid,
            token
        },
        msg: '登陆成功！'
    };
});

module.exports = loginRouter;